package com.bristua.order.biz;

import com.bristua.common.bean.PageBean;
import com.bristua.order.dao.TOrderMapper;
import com.bristua.order.model.TOrder;
import com.bristua.order.model.condition.QueryOrderParams;
import com.bristua.order.model.condition.TOrderExample;
import com.bristua.order.model.vo.QueryUserOrderVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2019/4/3.
 */
@Service
public class QueryUserOrdersBiz {


    @Resource
    private TOrderMapper tOrderMapper;

    public PageBean queryUserOrder(QueryOrderParams queryOrderParams){
        TOrderExample tOrderExample = new TOrderExample();
        TOrderExample.Criteria criteria = tOrderExample.createCriteria();

        if(!StringUtils.isEmpty(queryOrderParams.getStartTime())){
            criteria.andCreateTimeGreaterThan(queryOrderParams.getStartTime()+" 00:00:00");
        }

        if(!StringUtils.isEmpty(queryOrderParams.getEndTime())){
            criteria.andCreateTimeLessThan(queryOrderParams.getEndTime()+" 23:59:59");
        }

        if(!StringUtils.isEmpty(queryOrderParams.getStatus())){
            switch (queryOrderParams.getStatus()){//1:待付款，2:待发货，3:待收货，4:待评价,0:全部
                case "1":
                    criteria.andPayStausEqualTo("1").andOrderStatusEqualTo("1");
                    break;
                case "2":
                    criteria.andPayStausEqualTo("2");
                    criteria.andSendStatusEqualTo("1");
                    break;
                case "3":
                    criteria.andPayStausEqualTo("2");
                    criteria.andSendStatusEqualTo("2");
                    break;
                case "4":
                    criteria.andPayStausEqualTo("2");
                    criteria.andSendStatusEqualTo("2");
                    criteria.andConfirmStatusEqualTo("2");
                    criteria.andEvaluateStatusEqualTo("0");
                    break;

            }
        }


        Page<TOrder> objects = PageHelper.startPage(queryOrderParams.getPageNo(),queryOrderParams.getPageSize());
        tOrderMapper.selectByExample(tOrderExample);
//        tOrderGoodsMapper.selectByExample(tOrderExample);

        PageBean data = new PageBean<>(objects);
        if(data.getList()!=null && data.getList().size()>0){
            List<QueryUserOrderVO> queryUserOrderVOS = new ArrayList<>();
            for(int i=0;i<data.getList().size();i++){
                TOrder tOrder = (TOrder) data.getList().get(i);
                QueryUserOrderVO queryUserOrderVO = new QueryUserOrderVO();
                BeanUtils.copyProperties(tOrder,queryUserOrderVO);
                if("1".equals(tOrder.getPayStaus()) && "1".equals(tOrder.getOrderStatus())){
                    queryUserOrderVO.setStatus(1);
                }
                if("2".equals(tOrder.getPayStaus()) && "1".equals(tOrder.getSendStatus())){
                    queryUserOrderVO.setStatus(2);
                }
                if("2".equals(tOrder.getPayStaus()) && "2".equals(tOrder.getSendStatus()) && "1".equals(tOrder.getConfirmStatus()) ){
                    queryUserOrderVO.setStatus(3);
                }
                if("2".equals(tOrder.getPayStaus()) && "2".equals(tOrder.getSendStatus()) && "2".equals(tOrder.getConfirmStatus())&&"0".equals(tOrder.getEvaluateStatus())){
                    queryUserOrderVO.setStatus(4);
                }
                if("2".equals(tOrder.getPayStaus()) && "2".equals(tOrder.getSendStatus()) && "2".equals(tOrder.getConfirmStatus())&&"1".equals(tOrder.getEvaluateStatus())){
                    queryUserOrderVO.setStatus(5);
                }
                if("1".equals(tOrder.getPayStaus()) && "2".equals(tOrder.getOrderStatus())){
                    queryUserOrderVO.setStatus(6);
                }
                queryUserOrderVOS.add(queryUserOrderVO);
//                tDevice.setIsOnline(DeviceCode.getValueByCode(Integer.valueOf(tDevice.getIsOnline())));
            }
            data.getList().clear();
            data.getList().addAll(queryUserOrderVOS);
        }
        return data;
    }
}
